using Microsoft.AspNetCore.Hosting;

using Tool;

namespace Abc
{
    public static class WebGloble
    {
        /// <summary>
        /// 系统运行的秒数
        /// </summary>
        public static long SysRunSeconds { get; set; }

        /// <summary>
        /// Web 主机注入
        /// </summary>
        /// <param name="hostBuilder">Web主机构建器</param>
        /// <param name="assemblyName">外部程序集名称</param>
        /// <returns>IWebHostBuilder</returns>
        public static IWebHostBuilder WebInt(this IWebHostBuilder hostBuilder, string assemblyName = nameof(Furion))
        {
            AppEx.GetLogger("MethodLog", retainedFileCountLimit: 100);
            //AppEx.GetLogger(LogConsts.ProfitSharing);
            //AppEx.GetLogger(LogConsts.ApiApplets);
            //AppEx.GetLogger(LogConsts.OilOrder);
            //AppEx.GetLogger(LogConsts.OilCardInfo);

            hostBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, assemblyName);
            return hostBuilder;
        }

        #region 获取邮件配置

        //public ResultData<EmailSendConfig> GetEmailSendConfig()
        //{
        //    var resultdata = new ResultData<EmailSendConfig>();
        //    EmailSendConfig emailSendConfig = new EmailSendConfig();

        //    var _dataConfigService = App.GetService<IDataConfigService>();

        //    var DataConfigs = _dataConfigService.GetAll().Result;

        //    #region SMTP服务器

        //    {
        //        var dc = DataConfigs.FirstOrDefault(o => o.Key != null && o.Key.ToLower() == "EmailSmtpHost".ToLower());
        //        if (dc == null)
        //        {
        //            resultdata.Msg = "SMTP服务器 没有设置";
        //            return resultdata;
        //        }

        //        if (string.IsNullOrWhiteSpace(dc.Value))
        //        {
        //            resultdata.Msg = "SMTP服务器 没有设置";
        //            return resultdata;
        //        }

        //        emailSendConfig.SmtpHost = dc.Value;
        //    }

        //    #endregion

        //    #region SMTP端口

        //    {
        //        var dc = DataConfigs.FirstOrDefault(o => o.Key != null && o.Key.ToLower() == "EmailSmtpPort".ToLower());
        //        if (dc == null)
        //        {
        //            resultdata.Msg = "SMTP端口 没有设置";
        //            return resultdata;
        //        }

        //        if (string.IsNullOrWhiteSpace(dc.Value))
        //        {
        //            resultdata.Msg = "SMTP端口 没有设置";
        //            return resultdata;
        //        }

        //        emailSendConfig.SmtpPort = dc.Value.ToInt32(out bool state);

        //        if (state == false)
        //        {
        //            resultdata.Msg = "SMTP端口 设置错误";
        //            return resultdata;
        //        }
        //    }

        //    #endregion

        //    #region 登陆邮件账户

        //    {
        //        var dc = DataConfigs.FirstOrDefault(o => o.Key != null && o.Key.ToLower() == "EmailUser".ToLower());
        //        if (dc == null)
        //        {
        //            resultdata.Msg = "发送邮件账户 没有设置";
        //            return resultdata;
        //        }

        //        if (string.IsNullOrWhiteSpace(dc.Value))
        //        {
        //            resultdata.Msg = "发送邮件账户 没有设置";
        //            return resultdata;
        //        }

        //        emailSendConfig.LoginAccount = dc.Value;
        //    }

        //    #endregion

        //    #region 登陆邮件账户密码

        //    {
        //        var dc = DataConfigs.FirstOrDefault(o => o.Key != null && o.Key.ToLower() == "EmailPassword".ToLower());
        //        if (dc == null)
        //        {
        //            resultdata.Msg = "发送邮件账户密码 没有设置";
        //            return resultdata;
        //        }

        //        if (string.IsNullOrWhiteSpace(dc.Value))
        //        {
        //            resultdata.Msg = "发送邮件账户密码 没有设置";
        //            return resultdata;
        //        }

        //        emailSendConfig.LoginPassword = dc.Value;
        //    }

        //    #endregion

        //    #region 是否启用SSL加密

        //    {
        //        var dc = DataConfigs.FirstOrDefault(o => o.Key != null && o.Key.ToLower() == "EmailEnableSsl".ToLower());
        //        if (dc == null)
        //        {
        //            resultdata.Msg = "是否启用SSL加密 没有设置";
        //            return resultdata;
        //        }

        //        if (string.IsNullOrWhiteSpace(dc.Value))
        //        {
        //            resultdata.Msg = "是否启用SSL加密 没有设置";
        //            return resultdata;
        //        }

        //        emailSendConfig.IsSsl = dc.Value.ToBool(out bool state);
        //        if (state == false)
        //        {
        //            resultdata.Msg = "SSL加密 设置错误,只能是bool类型";
        //            return resultdata;
        //        }
        //    }

        //    #endregion

        //    #region 发送者显示名

        //    {
        //        var dc = DataConfigs.FirstOrDefault(o => o.Key != null && o.Key.ToLower() == "EmailDisplayName".ToLower());
        //        if (dc == null)
        //        {
        //            resultdata.Msg = "发送者显示名 没有设置";
        //            return resultdata;
        //        }

        //        if (string.IsNullOrWhiteSpace(dc.Value))
        //        {
        //            resultdata.Msg = "发送者显示名 没有设置";
        //            return resultdata;
        //        }

        //        emailSendConfig.SenderUserName = dc.Value;
        //    }

        //    #endregion

        //    #region 发送邮件来源

        //    {
        //        var dc = DataConfigs.FirstOrDefault(o => o.Key != null && o.Key.ToLower() == "EmailFrom".ToLower());
        //        if (dc == null)
        //        {
        //            resultdata.Msg = "发送邮件来源 没有设置";
        //            return resultdata;
        //        }

        //        if (string.IsNullOrWhiteSpace(dc.Value))
        //        {
        //            resultdata.Msg = "发送邮件来源 没有设置";
        //            return resultdata;
        //        }

        //        emailSendConfig.SenderUserEmail = dc.Value;
        //    }

        //    #endregion

        //    resultdata.Data = emailSendConfig;
        //    resultdata.State = true;

        //    EmailHelper.SetConfig(emailSendConfig);

        //    return resultdata;

        //}

        #endregion
    }
}